﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
using System.Windows.Forms;

namespace TRASOutlook
{
    public partial class ThisAddIn
    {

        private Office.CommandBar menuBar;
        private Office.CommandBarPopup newMenuBar;
        private Office.CommandBarButton configureButton;
        private Office.CommandBarButton updateButton;
        private string menuTag = "TRAS";

        private void AddMenuBar()
        {
            try
            {
                menuBar = this.Application.ActiveExplorer().CommandBars.ActiveMenuBar;
                newMenuBar = (Office.CommandBarPopup)menuBar.Controls.Add(
                    Office.MsoControlType.msoControlPopup, missing,
                    missing, missing, false);
                if (newMenuBar != null)
                {
                    newMenuBar.Caption = "运营工作";
                    newMenuBar.Tag = menuTag;
                    configureButton = (Office.CommandBarButton)newMenuBar.Controls.
                    Add(Office.MsoControlType.msoControlButton, missing,
                        missing, 1, true);
                    configureButton.Style = Office.MsoButtonStyle.
                        msoButtonIconAndCaption;
                    configureButton.Caption = "TRAS配置";
                    configureButton.FaceId = 162;
                    configureButton.Tag = "TRAS配置";
                    configureButton.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(configureButton_Click);

                    updateButton = (Office.CommandBarButton)newMenuBar.Controls.Add(
                        Office.MsoControlType.msoControlButton, missing,
                        missing, 2, true);
                    updateButton.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
                    updateButton.Caption = "与TRAS服务器更新";
                    updateButton.FaceId = 37;
                    updateButton.Tag = "";
                    updateButton.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(updateButton_Click);

                    newMenuBar.Visible = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void RemoveMenubar()
        {
            // If the menu already exists, remove it.    
            try
            {
                Office.CommandBarPopup foundMenu = 
                    (Office.CommandBarPopup)this.Application.ActiveExplorer().CommandBars.ActiveMenuBar.FindControl(
                        Office.MsoControlType.msoControlPopup, 
                        missing, menuTag, true, true
                    );
                if (foundMenu != null)
                {
                    foundMenu.Delete(true);
                }
            }
            catch (Exception ex) 
            { 
                MessageBox.Show(ex.Message); 
            }
        }

        void configureButton_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault)
        {
            ConfigureForm configureForm = new ConfigureForm();
            configureForm.ShowDialog();
        }

        void updateButton_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault)
        {
            CTaskMgr.Instance().SynchronizeTasks();
        }


        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            RemoveMenubar();
            AddMenuBar();
            CTaskMgr.Instance().Addin = this;
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        #region VSTO generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }

        #endregion
    }
}
